From 98ba28b5d7840da5ec71d4402ad7049051bd82d4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Wed, 6 Dec 2017 16:07:18 +0100 Subject: [PATCH] gl renderer: Add a helper function We'll use this for the common case of a color matrix node inside a shadow node. --- gsk/gl/gskglrenderer.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index 9a559b4992..c07527c556 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -144,6 +144,23 @@ sort_border_sides (const GdkRGBA *colors, } } +static inline gboolean +color_matrix_modifies_alpha (GskRenderNode *node) +{ + const graphene_matrix_t *matrix = gsk_color_matrix_node_peek_color_matrix (node); + const graphene_vec4_t *offset = gsk_color_matrix_node_peek_color_offset (node); + graphene_vec4_t row3; + graphene_vec4_t id_row3; + + if (graphene_vec4_get_w (offset) != 0.0f) + return TRUE; + + graphene_vec4_init (&id_row3, 0, 0, 0, 1); + graphene_matrix_get_row (matrix, 3, &row3); + + return !graphene_vec4_equal (&id_row3, &row3); +} + static void gsk_gl_renderer_setup_render_mode (GskGLRenderer *self); static void add_offscreen_ops (GskGLRenderer *self, RenderOpBuilder *builder, -- 2.30.2